package com.songtech.base.universal.controller;

import java.util.Map;

import com.github.pagehelper.Page;

/**
 * 传入参数解析后存放的对象
 */
public class UniversalParam {
	/** 要调用的mybatis方法（namespace + "." + methodName） */
	private String methodName;
	/** 分页模型 */
	private Page<?> page;
	/** 当前页数 */
	private Integer pageNum;
	/** 每页的数据条数 */
	private Integer pageSize;
	/** mybatis的查询参数 */
	private Map<String, Object> param;
	
	/** 要调用的mybatis方法（namespace + "." + methodName） */
	public String getMethodName() {
		return methodName;
	}
	/** 要调用的mybatis方法（namespace + "." + methodName） */
	public void setMethodName(String methodName) {
		this.methodName = methodName;
	}
	/** 要调用的mybatis方法（namespace + "." + methodName） */
	public void setMethodName(Object methodName) {
		this.methodName = methodName == null ? null : methodName.toString();
	}
	/** 分页模型 */
	public Page<?> getPage() {
		return page == null ? new Page<>() : page;
	}
	/** 分页模型 */
	public void setPage(Page<?> page) {
		this.page = page;
		if(page != null){
			this.pageNum = page.getPageNum();
			this.pageSize = page.getPageSize();
		}
	}
	/** 分页模型 */
	public void setPage(Integer pageNum, Integer pageSize) {
		this.page = new Page<>(pageNum, pageSize);
		this.pageNum = page.getPageNum();
		this.pageSize = page.getPageSize();
	}
	/** 当前页数 */
	public Integer getPageNum() {
		return pageNum;
	}
	/** 当前页数 */
	public void setPageNum(Integer pageNum) {
		if(pageNum != null){
			this.pageNum = pageNum;
			if(this.page == null){
				this.page = new Page<>();
			}
			this.page.setPageNum(pageNum);
		}
	}
	/** 当前页数 */
	public void setPageNum(Object pageNum) {
		if(pageNum != null){
			this.pageNum = Integer.parseInt(pageNum.toString());
			if(this.page == null){
				this.page = new Page<>();
			}
			this.page.setPageNum(this.pageNum);
		}
	}
	/** 每页的数据条数 */
	public Integer getPageSize() {
		return pageSize;
	}
	/** 每页的数据条数 */
	public void setPageSize(Integer pageSize) {
		if(pageSize != null){
			this.pageSize = pageSize;
			if(this.page == null){
				this.page = new Page<>();
			}
			this.page.setPageSize(this.pageSize);
		}
	}
	/** 每页的数据条数 */
	public void setPageSize(Object pageSize) {
		if(pageSize != null){
			this.pageSize = Integer.parseInt(pageSize.toString());
			if(this.page == null){
				this.page = new Page<>();
			}
			this.page.setPageSize(this.pageSize);
		}
	}
	/** mybatis的查询参数 */
	public Map<String, Object> getParam() {
		return param;
	}
	/** mybatis的查询参数 */
	public void setParam(Map<String, Object> param) {
		this.param = param;
	}
	/** mybatis的查询参数 */
	@SuppressWarnings("unchecked")
	public void setParam(Object param) {
		this.param = param == null ? null : (Map<String, Object>) param;
	}
	
	@Override
	public String toString(){
		return "UniversalParam [methodName = " + methodName + ", pageNum = " + pageNum + ", pageSize = " + pageSize + ", param = " + param + "]";
	}
}
